<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>GPU.JS : Test All</title>
  <link rel="stylesheet" href="../node_modules/qunit/qunit/qunit.css">

  <script src="browser-test-utils.js"></script>
  <!-- gpu.js scripts -->
  <script src="../dist/gpu-browser.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script>
  const isBrowser = true;
  const browserGPU = { GPU };
  for (const p in GPU) {
    if (p === 'GPU') continue;
    browserGPU[p] = GPU[p];
  }
  window.process = {
    cwd: () => {
      return '../..';
    }
  };
  window.require = (module) => {
    if (module.match(/[.][.]\/src$/)) return browserGPU;
    if (module === 'sinon') return sinon;
    if (module === 'qunit') return QUnit;
    if (module === 'acorn') return acorn;
    if (module.match(/[.][.]\/browser-test-utils$/)) return browserTestUtils;
    throw new Error('cannot find ' + module);
  };
</script>
<script src="../node_modules/sinon/pkg/sinon.js"></script>
<script src="../node_modules/qunit/qunit/qunit.js"></script>
<script src="../node_modules/acorn/dist/acorn.js"></script>
<!-- the following list of javascript files is built automatically -->
<script type="module" src="features/add-custom-function.js"></script>
<script type="module" src="features/add-custom-native-function.js"></script>
<script type="module" src="features/add-typed-functions.js"></script>
<script type="module" src="features/argument-array-types.js"></script>
<script type="module" src="features/argument-array1d-types.js"></script>
<script type="module" src="features/argument-array2d-types.js"></script>
<script type="module" src="features/argument-array3d-types.js"></script>
<script type="module" src="features/arithmetic-operators.js"></script>
<script type="module" src="features/assignment-operators.js"></script>
<script type="module" src="features/basic-math.js"></script>
<script type="module" src="features/bitwise-operators.js"></script>
<script type="module" src="features/boolean-from-expression.js"></script>
<script type="module" src="features/canvas.js"></script>
<script type="module" src="features/clear-textures.js"></script>
<script type="module" src="features/clone-textures.js"></script>
<script type="module" src="features/combine-kernels.js"></script>
<script type="module" src="features/constants-array.js"></script>
<script type="module" src="features/constants-bool.js"></script>
<script type="module" src="features/constants-canvas.js"></script>
<script type="module" src="features/constants-float.js"></script>
<script type="module" src="features/constants-image-array.js"></script>
<script type="module" src="features/constants-image.js"></script>
<script type="module" src="features/constants-integer.js"></script>
<script type="module" src="features/constants-texture.js"></script>
<script type="module" src="features/cpu-with-textures.js"></script>
<script type="module" src="features/create-kernel-map.js"></script>
<script type="module" src="features/demo.js"></script>
<script type="module" src="features/destroy.js"></script>
<script type="module" src="features/destructured-assignment.js"></script>
<script type="module" src="features/dev-mode.js"></script>
<script type="module" src="features/dynamic-arguments.js"></script>
<script type="module" src="features/dynamic-output.js"></script>
<script type="module" src="features/function-return.js"></script>
<script type="module" src="features/get-canvas.js"></script>
<script type="module" src="features/get-pixels.js"></script>
<script type="module" src="features/if-else.js"></script>
<script type="module" src="features/image-array.js"></script>
<script type="module" src="features/image.js"></script>
<script type="module" src="features/infinity.js"></script>
<script type="module" src="features/inject-native.js"></script>
<script type="module" src="features/input.js"></script>
<script type="module" src="features/internally-defined-matrices.js"></script>
<script type="module" src="features/json.js"></script>
<script type="module" src="features/legacy-encoder.js"></script>
<script type="module" src="features/loops.js"></script>
<script type="module" src="features/math-object.js"></script>
<script type="module" src="features/nested-function.js"></script>
<script type="module" src="features/offscreen-canvas.js"></script>
<script type="module" src="features/optimize-float-memory.js"></script>
<script type="module" src="features/output.js"></script>
<script type="module" src="features/promise-api.js"></script>
<script type="module" src="features/raw-output.js"></script>
<script type="module" src="features/read-color-texture.js"></script>
<script type="module" src="features/read-from-texture.js"></script>
<script type="module" src="features/read-image-bitmap.js"></script>
<script type="module" src="features/read-image-data.js"></script>
<script type="module" src="features/read-offscreen-canvas.js"></script>
<script type="module" src="features/return-arrays.js"></script>
<script type="module" src="features/single-precision-textures.js"></script>
<script type="module" src="features/single-precision.js"></script>
<script type="module" src="features/switches.js"></script>
<script type="module" src="features/tactic.js"></script>
<script type="module" src="features/ternary.js"></script>
<script type="module" src="features/type-management.js"></script>
<script type="module" src="features/unsigned-precision-textures.js"></script>
<script type="module" src="features/video.js"></script>
<script type="module" src="internal/argument-texture-switching.js"></script>
<script type="module" src="internal/boolean.js"></script>
<script type="module" src="internal/casting.js"></script>
<script type="module" src="internal/constants-texture-switching.js"></script>
<script type="module" src="internal/constructor-features.js"></script>
<script type="module" src="internal/context-inheritance.js"></script>
<script type="module" src="internal/deep-types.js"></script>
<script type="module" src="internal/deprecated.js"></script>
<script type="module" src="internal/different-texture-cloning.js"></script>
<script type="module" src="internal/function-builder.js"></script>
<script type="module" src="internal/function-composition.js"></script>
<script type="module" src="internal/function-node.js"></script>
<script type="module" src="internal/function-return-type-detection.js"></script>
<script type="module" src="internal/function-tracer.js"></script>
<script type="module" src="internal/gpu-methods.js"></script>
<script type="module" src="internal/implied-else.js"></script>
<script type="module" src="internal/kernel-run-shortcut.js"></script>
<script type="module" src="internal/kernel.js"></script>
<script type="module" src="internal/loop-int.js"></script>
<script type="module" src="internal/loop-max.js"></script>
<script type="module" src="internal/math.random.js"></script>
<script type="module" src="internal/matrix-multiply-precision.js"></script>
<script type="module" src="internal/mixed-memory-optimize.js"></script>
<script type="module" src="internal/modes.js"></script>
<script type="module" src="internal/overloading.js"></script>
<script type="module" src="internal/precision.js"></script>
<script type="module" src="internal/recycling.js"></script>
<script type="module" src="internal/texture-index.js"></script>
<script type="module" src="internal/underscores.js"></script>
<script type="module" src="internal/utils.js"></script>
<script type="module" src="issues/114-create-kernel-map-run-second-time.js"></script>
<script type="module" src="issues/116-multiple-kernels-run-again.js"></script>
<script type="module" src="issues/130-typed-array.js"></script>
<script type="module" src="issues/147-missing-constant.js"></script>
<script type="module" src="issues/152-for-vars.js"></script>
<script type="module" src="issues/159-3d.js"></script>
<script type="module" src="issues/174-webgl-context-warning.js"></script>
<script type="module" src="issues/195-read-from-texture2d.js"></script>
<script type="module" src="issues/207-same-function-reuse.js"></script>
<script type="module" src="issues/212-funky-function-support.js"></script>
<script type="module" src="issues/233-kernel-map-single-precision.js"></script>
<script type="module" src="issues/241-CPU-vs-GPU-maps-output-differently.js"></script>
<script type="module" src="issues/259-atan2.js"></script>
<script type="module" src="issues/263-to-string.js"></script>
<script type="module" src="issues/267-immutable-sub-kernels.js"></script>
<script type="module" src="issues/270-cache.js"></script>
<script type="module" src="issues/279-wrong-canvas-size.js"></script>
<script type="module" src="issues/300-nested-array-index.js"></script>
<script type="module" src="issues/31-nested-var-declare-test.js"></script>
<script type="module" src="issues/313-variable-lookup.js"></script>
<script type="module" src="issues/314-large-input-array-addressing.js"></script>
<script type="module" src="issues/335-missing-z-index-issue.js"></script>
<script type="module" src="issues/346-uint8array-converted.js"></script>
<script type="module" src="issues/349-division-by-factors-of-3.js"></script>
<script type="module" src="issues/357-modulus-issue.js"></script>
<script type="module" src="issues/359-addfunction-params-wrong.js"></script>
<script type="module" src="issues/378-only-first-iteration.js"></script>
<script type="module" src="issues/382-bad-constant.js"></script>
<script type="module" src="issues/390-thread-assignment.js"></script>
<script type="module" src="issues/396-combine-kernels-example.js"></script>
<script type="module" src="issues/399-double-definition.js"></script>
<script type="module" src="issues/401-cpu-canvas-check.js"></script>
<script type="module" src="issues/410-if-statement.js"></script>
<script type="module" src="issues/422-warnings.js"></script>
<script type="module" src="issues/470-modulus-wrong.js"></script>
<script type="module" src="issues/471-canvas-issue.js"></script>
<script type="module" src="issues/472-compilation-issue.js"></script>
<script type="module" src="issues/473-4-pixels.js"></script>
<script type="module" src="issues/487-dynamic-arguments.js"></script>
<script type="module" src="issues/493-strange-literal.js"></script>
<script type="module" src="issues/500-sticky-arrays.js"></script>
<script type="module" src="issues/519-sanitize-names.js"></script>
<script type="module" src="issues/553-permanent-flip.js"></script>
<script type="module" src="issues/556-minify-for-loop.js"></script>
<script type="module" src="issues/560-minification-madness.js"></script>
<script type="module" src="issues/564-boolean.js"></script>
<script type="module" src="issues/567-wrong-modulus.js"></script>
<script type="module" src="issues/585-inaccurate-lookups.js"></script>
<script type="module" src="issues/586-unable-to-resize.js"></script>
<script type="module" src="issues/608-rewritten-arrays.js"></script>
<script type="module" src="issues/91-create-kernel-map-array.js"></script>
<script type="module" src="issues/96-param-names.js"></script>
<script type="module" src="features/to-string/as-file.js"></script>
<script type="module" src="internal/backend/cpu-kernel.js"></script>
<script type="module" src="internal/backend/gl-kernel.js"></script>
<script type="module" src="internal/backend/function-node/isSafe.js"></script>
<script type="module" src="internal/backend/function-node/isSafeDependencies.js"></script>
<script type="module" src="features/to-string/precision/single/graphical.js"></script>
<script type="module" src="features/to-string/precision/unsigned/graphical.js"></script>
<script type="module" src="internal/backend/headless-gl/kernel/index.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/astBinaryExpression.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/astCallExpression.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/astForStatement.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/astVariableDeclaration.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/contexts.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/firstAvailableTypeFromAst.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/getVariableSignature.js"></script>
<script type="module" src="internal/backend/web-gl/function-node/getVariableType.js"></script>
<script type="module" src="internal/backend/web-gl/kernel/index.js"></script>
<script type="module" src="internal/backend/web-gl/kernel/setupArguments.js"></script>
<script type="module" src="internal/backend/web-gl/kernel/setupConstants.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-html-image.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-memory-optimized-number-texture.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-number-texture.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-single-array.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-single-array1d-i.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-single-array2d-i.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-single-array3d-i.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-single-input.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-unsigned-array.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/dynamic-unsigned-input.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/html-image.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/memory-optimized-number-texture.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/number-texture.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/single-array.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/single-array1d-i.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/single-array2d-i.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/single-array3d-i.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/single-input.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/unsigned-array.js"></script>
<script type="module" src="internal/backend/web-gl/kernel-value/unsigned-input.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel/index.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel/setupArguments.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel/setupConstants.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel-value/dynamic-html-image-array.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel-value/dynamic-single-array.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel-value/dynamic-single-input.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel-value/html-image-array.js"></script>
<script type="module" src="internal/backend/web-gl2/kernel-value/single-input.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array2.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array2d.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array2d2.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array2d3.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array3.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array3d.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/array4.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/boolean.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/float.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/html-canvas.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/html-image-array.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/html-image.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/html-video.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/input.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/integer.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/arguments/number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/constants/array.js"></script>
<script type="module" src="features/to-string/precision/single/constants/array2.js"></script>
<script type="module" src="features/to-string/precision/single/constants/array2d.js"></script>
<script type="module" src="features/to-string/precision/single/constants/array3.js"></script>
<script type="module" src="features/to-string/precision/single/constants/array3d.js"></script>
<script type="module" src="features/to-string/precision/single/constants/array4.js"></script>
<script type="module" src="features/to-string/precision/single/constants/boolean.js"></script>
<script type="module" src="features/to-string/precision/single/constants/float.js"></script>
<script type="module" src="features/to-string/precision/single/constants/html-canvas.js"></script>
<script type="module" src="features/to-string/precision/single/constants/html-image-array.js"></script>
<script type="module" src="features/to-string/precision/single/constants/html-image.js"></script>
<script type="module" src="features/to-string/precision/single/constants/input.js"></script>
<script type="module" src="features/to-string/precision/single/constants/integer.js"></script>
<script type="module" src="features/to-string/precision/single/constants/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/constants/number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/returns/array.js"></script>
<script type="module" src="features/to-string/precision/single/returns/array2d.js"></script>
<script type="module" src="features/to-string/precision/single/returns/array3d.js"></script>
<script type="module" src="features/to-string/precision/single/returns/texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/array2.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/array2d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/array3.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/array3d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/array4.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/boolean.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/float.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/html-canvas.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/html-image-array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/html-image.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/html-video.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/input.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/integer.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/arguments/number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/array2.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/array2d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/array3.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/array3d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/array4.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/boolean.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/float.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/html-canvas.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/html-image-array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/html-image.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/input.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/integer.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/constants/number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/returns/array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/returns/array2d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/returns/array3d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/returns/texture.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/array/array.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/array/array2d.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/array/array3d.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/array/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/array/number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/object/array.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/object/array2d.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/object/array3d.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/object/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/single/kernel-map/object/number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/array/array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/array/array2d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/array/array3d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/array/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/array/number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/object/array.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/object/array2d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/object/array3d.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/object/memory-optimized-number-texture.js"></script>
<script type="module" src="features/to-string/precision/unsigned/kernel-map/object/number-texture.js"></script>
</body>
</html>
